$NG.AllReady(function (page, { useValuesChange, useClick,useDataIndexChange, useUpdateRows, useUpdateRow }) {
    const mstform = $NG.getCmpApi("p_form_equipment_chg");
    const dgrid1 = $NG.getCmpApi("p_form_equipment_chg_d");
    const dgrid2 = $NG.getCmpApi("p_form_equipment_chg_impl");
    const dgrid3 = $NG.getCmpApi("p_form_equipment_chg_svc");
    const dgrid4 = $NG.getCmpApi("p_form_equipment_chg_rd");
    let dgrid5 = $NG.getCmpApi("p_form_equipment_chg_qz");
    console.log(`dgrid5`,dgrid5);
    const toolbar_dgrid = $NG.getCmpApi("toolbar_p_form_equipment_chg_d");
    //隐藏表头表体单据引用按钮
    $NG.getCmpApi("toolbar_top").getItem("imp").setHidden();
    $NG.getCmpApi("toolbar_p_form_equipment_chg_d").getItem("imp").setHidden();
    $NG.getCmpApi("toolbar_p_form_equipment_chg_impl").getItem("imp").setHidden();
    $NG.getCmpApi("toolbar_p_form_equipment_chg_svc").getItem("imp").setHidden();
    $NG.getCmpApi("toolbar_p_form_equipment_chg_rd").getItem("imp").setHidden();
  
    const project_amt = {
      _amt: 0,
      //变更含税
      _amt_bg: 0,
      //未税
      _amt_ws: 0,
      sum: function () {
        $NG.updateState((updater) => {
          updater.data.p_form_equipment_chg.setProps({
            u_total_cost_amt_vat: this._amt,
            u_total_cost_amt: this._amt_ws,
            u_total_cost_change: this._amt_bg,
          });
        });
      },
      set amt(value) {
        this._amt = Number(value);
        this.sum();
      },
      get amt() {
        return this._amt;
      },
      set amt_bg(value) {
        this._amt_bg = Number(value);
        this.sum();
      },
      get amt_bg() {
        return this._amt_bg;
      },
      set amt_ws(value) {
        this._amt_ws = Number(value);
        this.sum();
      },
      get amt_ws() {
        return this.amt_ws;
      },
    };
    ///////////////////////////////////////////////////////////  函数区域  ////////////////////////////////////////////////////////////
    //生成明细主键
    function generate15DigitNumber(arr) {
		console.log("编辑phid");
		arr.forEach((item) => {
			let str = "";
			// 获取当前时间戳
			let timestamp = Date.now().toString();
			// 如果时间戳不足 15 位，计算需要补充的位数
			let remainingLength = 15 - timestamp.length;
			if (remainingLength > 0) {
				// 生成指定长度的随机数
				let randomPart = "";
				for (let i = 0; i < remainingLength; i++) {
					randomPart += Math.floor(Math.random() * 10);
				}
				// 将时间戳和随机数拼接成 15 位数字
				str = String(timestamp + randomPart);
			} else {
				// 如果时间戳长度超过 15 位，截取前 15 位
				str = String(timestamp.slice(0, 15));
			}
			console.log(str);
			if (!item.u_phid) {
				item.u_phid = str;
				dgrid1.refreshView();
				dgrid2.refreshView();
				dgrid3.refreshView();
				dgrid4.refreshView();
			}
		});
	}

  //生成设备清单编码
  function createSbqdNo(arr){
    arr.forEach(function (item) {
      if(!item.u_eq_item_no){
        item.u_eq_item_no = String(Date.now())
      }
    });

  }


    ////////////////////////////////////////////////////////////--init--////////////////////////////////////////////////////////////
    if (mstform) {
      if(page.oType=='add'){
        getCntCount("p_form_equipment_chg", "u_cnt_id", () => {
            getCntMInfoByPhid();
            getSbqdDetailByCnt();
            danjvchaxun();
          });
      }
      getPtInfoByPhid();
      cntMFilter();
      if (page.oType == "add" || page.oType == "edit" || page.oType == "copy") {
        // u_eq_ori
        var u_eq_ori = mstform.getItem("u_eq_ori");
        if (!u_eq_ori.getValue() && mstform.getItem("phid_pc").getValue()) {
          getEqOri();
        } else {
        }
      }
      useValuesChange(({ args }) => {
        getEqOri();
      }, "p_form_equipment_chg.phid_pc");
      function getEqOri() {
        try {
          // let mstform = $NG.getCmpApi("p_form_equipment_chg");
          let phid_pc = mstform.getItem("phid_pc").getValue();
          $NG.execServer("getEqOri", { phid_pc: phid_pc }, function (res) {
            const data = JSON.parse(res.data)[0].extendObjects; //单返回值
            // const datas = JSON.parse(res.data).map((item) => item.extendObjects); //多返回值
            // console.log(data);
            // console.log(datas);
            if (res.count > 0) {
              mstform.getItem("u_eq_ori").setValue({
                value: data.phid,
                label: data.bill_name,
              });
            } else {
              console.log("功能扩展暂无数据");
            }
          });
        } catch (error) {
          console.error("功能扩展报错:", error);
        }
      }
    }
    //按钮隐藏
    // $NG.getCmpApi("toolbar_top").hideButton("addrow");
    const btn_arr = ["p_form_equipment_chg_impl", "p_form_equipment_chg_svc", "p_form_equipment_chg_rd", "p_form_equipment_chg_d"];
    btn_arr.forEach((item) => {
      console.log(item, $NG.getCmpApi(item));
    //   $NG
    //     .getCmpApi("toolbar_" + item)
    //     .getItem("addrow")
    //     .setHidden();
    //   $NG
    //     .getCmpApi("toolbar_" + item)
    //     .getItem("deleterow")
    //     .setHidden();
      if (item == "p_form_equipment_chg_d") {
        // $NG
        //   .getCmpApi("toolbar_" + item)
        //   .getItem("attachment")
        //   .setHidden();
      }
    });
  
    if (page.oType == "add") {
      mstform.getItem("u_alter_type").setValue("1");
  
      $NG
        .getCompMap()
        .get("__Tabs__")[0]
        .getApi()
        .updateItems((innerItems, activeKey) => {
          return [...innerItems.filter((item) => item.key !== "TabPage5")];
        });
    }
  
    //////////////////////////////////////////////////////////// --useValuesChange-- ////////////////////////////////////////////////////////////
    useValuesChange(({ args }) => {
      console.log(`项目监听`, args);
      getPtInfoByPhid();
      getCntCount("p_form_equipment_chg", "u_cnt_id", () => {
        getCntMInfoByPhid();
        getSbqdDetailByCnt();
      });
      cntMFilter();
      danjvchaxun();
    }, "p_form_equipment_chg.phid_pc");
    //监听合同
    useValuesChange(({ args }) => {
      console.log(`合同监听`, args);
      getCntMInfoByPhid();
      cntInfo()
    }, "p_form_equipment_chg_impl.u_cnt_id");
    useValuesChange(({ args }) => {
      console.log("测试测试", mstform.getItem("u_alter_type").getValue());
      if (mstform.getItem("u_alter_type").getValue() == "2") {
        $NG
          .getCompMap()
          .get("__Tabs__")[0]
          .getApi()
          .updateItems((innerItems, activeKey) => {
            return [...innerItems.filter((item) => true)];
          });
          getQzInfo()
        useUpdateRows(({ args }) => {
          dgrid5 = $NG.getCmpApi("p_form_equipment_chg_qz");
          qzInfoToSbqdInfo();
          console.log("测试");
        }, "p_form_equipment_chg_qz");
      } else if (mstform.getItem("u_alter_type").getValue() == "1") {
        $NG
          .getCompMap()
          .get("__Tabs__")[0]
          .getApi()
          .updateItems((innerItems, activeKey) => {
            return [...innerItems.filter((item) => item.key !== "TabPage5")];
          });
      }
    }, "p_form_equipment_chg.u_alter_type");
    //隐藏页签
    //////////////////////////////////////////////////////////// --useUpdateRows-- ////////////////////////////////////////////////////////////
    let project_total_amt = 0;
    let nfb_amt_vat = 0;
    let ncg_amt_vat = 0;
    let nzz_amt_vat = 0;
    let nfb_amt = 0;
    let ncg_amt = 0;
    let nzz_amt = 0;
    let ss_amt = 0;
    let cg_amt = 0;
    let zz_amt = 0;
    let nfb_b = 0;
    let ncg_b = 0;
    let nzz_b = 0;
    let ss_b = 0;
    let cg_b = 0;
    let zz_b = 0;
    let onLock = true;
    let timeId = 0;

      // 增加匹配物料
  toolbar_dgrid.insert({
    id: "user_match",
    text: "匹配物料",
    iconCls: "icon-InsertRow",
  });
  useClick(()=>{
    window._list = []
    window.sNum = 0
    window.eNum = 0
    timeId = setInterval(()=>{
      if(window.sNum == window.eNum){
        //发起请求
        console.log(`数据准备就绪`,window._list)
        clearInterval(timeId)
      } else{
        window.eNum = window.sNum
      }
    },1000)
    matchingWl()

  },"user_match")
  //这里标识这些字段只要发生编辑，就让u_item_no变成null，用于匹配物料判断
  const editNfbKey = ['u_sub_item','u_sub_name','u_sub_spec','u_sub_item_category','u_sub_item_msunit']
  const editNcg = ['u_pur_item','u_pur_item_msunit','u_pur_name','u_pur_spec','u_pur_item_category']
  const editNzz = ['u_self_item','u_self_item_msunit','u_self_name','u_self_spec','u_self_item_category']
  editNfbKey.forEach(key=>{
    useDataIndexChange(({args})=>{
      args[0].u_sub_item = null
      dgrid1.refreshView()
    },key)
  })
  editNcg.forEach(key=>{
    useDataIndexChange(({args})=>{
      args[0].u_pur_item = null
      dgrid1.refreshView()
    },key)
  })
  editNzz.forEach(key=>{
    useDataIndexChange(({args})=>{
      args[0].u_self_item = null
      dgrid1.refreshView()
    },key)
  })
    useUpdateRow(({ args }) => {
      const _data = args[0];
      _data.done = false
      _data.u_sub_cost_vat = (Number(_data.u_sub_prc) || 0) * (Number(_data.u_qty) || 0) * (1 + (Number(_data.u_sub_tax_rate) || 0));
      _data.u_pur_cost_vat = (Number(_data.u_pur_prc) || 0) * (Number(_data.u_qty) || 0) * (1 + (Number(_data.u_pur_tax_rate) || 0));
      _data.u_self_cost_vat = (Number(_data.u_self_prc) || 0) * (Number(_data.u_qty) || 0) * (1 + (Number(_data.u_self_tax_rate) || 0));
      dgrid1.refreshView()
    }, "p_form_equipment_chg_d");
    useUpdateRows(({ args }) => {
      const _arr = args[0];
      generate15DigitNumber(_arr)
      createSbqdNo(_arr)
      totalSum(_arr, "p_form_equipment_chg_d");
    }, "p_form_equipment_chg_d");
  
    useUpdateRows(({ args }) => {
      const _arr = args[0];
      generate15DigitNumber(_arr)
      totalSum(_arr, "p_form_equipment_chg_impl");
    }, "p_form_equipment_chg_impl");
  
    useUpdateRows(({ args }) => {
      const _arr = args[0];
      generate15DigitNumber(_arr)
      totalSum(_arr, "p_form_equipment_chg_svc");
    }, "p_form_equipment_chg_svc");
  
    useUpdateRows(({ args }) => {
      const _arr = args[0];
      generate15DigitNumber(_arr)
      totalSum(_arr, "p_form_equipment_chg_rd");
    }, "p_form_equipment_chg_rd");
    useUpdateRows(({ args }) => {
      qzInfoToSbqdInfo();
      generate15DigitNumber(args[0])
      console.log("测试");
    }, "p_form_equipment_chg_qz");
    function totalSum(data, table) {
      while (!onLock) {}
      onLock = false;
      const _arr = data;
      switch (table) {
        case "p_form_equipment_chg_d":
          //含税成本
          nfb_amt_vat = 0;
          ncg_amt_vat = 0;
          nzz_amt_vat = 0;
          //未税成本
          nfb_amt = 0;
          ncg_amt = 0;
          nzz_amt = 0;
          break;
        case "p_form_equipment_chg_impl":
          ss_amt = 0;
          break;
        case "p_form_equipment_chg_svc":
          cg_amt = 0;
          break;
        case "p_form_equipment_chg_rd":
          zz_amt = 0;
          break;
      }
      _arr.forEach((item) => {
        item.u_bglx = "normal";
        //汇总表头
        switch (table) {
          case "p_form_equipment_chg_d":
            //含税成本
            nfb_amt_vat += Number(item.u_sub_cost_vat) || 0;
            ncg_amt_vat += Number(item.u_pur_cost_vat) || 0;
            nzz_amt_vat += Number(item.u_self_cost_vat) || 0;
            //未税成本
            nfb_amt += Number(item.u_sub_cost) || 0;
            ncg_amt += Number(item.u_pur_cost) || 0;
            nzz_amt += Number(item.u_self_cost) || 0;
            break;
          case "p_form_equipment_chg_impl":
            ss_amt += Number(item.u_total_impl_amt) || 0;
            break;
          case "p_form_equipment_chg_svc":
            cg_amt += Number(item.u_total_svc_amt) || 0;
            break;
          case "p_form_equipment_chg_rd":
            zz_amt += Number(item.u_rd_expenses) || 0;
            break;
        }
      });
      //汇总总额
      project_total_amt = nfb_amt_vat + ncg_amt_vat + nzz_amt_vat + ss_amt + cg_amt + zz_amt;
      //比例
      switch (table) {
        case "p_form_equipment_chg_d":
          nfb_b = Number(nfb_amt_vat / project_total_amt) || 0;
          ncg_b = Number(ncg_amt_vat / project_total_amt) || 0;
          nzz_b = Number(nzz_amt_vat / project_total_amt) || 0;
          break;
        case "p_form_equipment_chg_impl":
          ss_b = Number(ss_amt / project_total_amt) || 0;
          break;
        case "p_form_equipment_chg_svc":
          cg_b = Number(cg_amt / project_total_amt) || 0;
          break;
        case "p_form_equipment_chg_rd":
          zz_b = Number(zz_amt / project_total_amt) || 0;
          break;
      }
  
      $NG.updateState((updater) => {
        updater.data.p_form_equipment_chg.setProps({
          u_sub_cost_amt_vat: nfb_amt_vat,
          u_pur_cost_amt_vat: ncg_amt_vat,
          u_self_cost_amt_vat: nzz_amt_vat,
          u_sub_cost_amt: nfb_amt,
          u_pur_cost_amt: ncg_amt,
          u_self_cost_amt: nzz_amt,
          u_implement_amt_vat: ss_amt,
          u_implement_amt: ss_amt,
          u_svc_cost_amt_vat: cg_amt,
          u_svc_cost_amt: cg_amt,
          u_sub_cost_ratio: nfb_b,
          u_pur_cost_ratio: ncg_b,
          u_self_cost_ratio: nzz_b,
          u_implement_cost_ratio: ss_b,
          u_svc_cost_ratio: cg_b,
        });
      });
      //项目金额变更汇总
      project_amt.amt_bg = project_total_amt;
      console.log(`汇总变更`, project_amt.amt_bg, nfb_amt_vat, ncg_amt_vat, nzz_amt_vat, ss_amt, cg_amt, zz_amt);
      onLock = true;
      dgrid1.refreshView();
    }
    /*
     * 功能扩展区
     */
    //获取合同信息
    cntInfo()
    function cntInfo() {
		let cnt = mstform.getItem("u_cnt_id").getValue();
		$NG.execServer("getSbqdFormInfo", { cnt }, (res) => {
			if (res.count == 0) return;
			const _data = JSON.parse(res.data)[0].extendObjects;
			$NG.updateState((updater) => {
				updater.data.p_form_equipment_chg.setProps({
					u_sub_cost_amt_vat_ori: _data.u_sub_cost,
					u_sub_cost_amt_ori: _data.u_sub_cost_amt,
					u_sub_cost_ratio_ori: _data.u_sub_cost_ratio,
					u_pur_cost_amt_vat_ori: _data.u_pur_cost_amt,
					u_pur_cost_amt_ori: _data.u_pur_reduction_cost_sum,
					u_pur_cost_ratio_ori: _data.u_pur_cost_ratio,
					u_self_cost_amt_vat_ori: _data.u_self_cost_vat,
					u_self_cost_amt_ori: _data.u_self_cost,
					u_self_cost_ratio_ori: _data.u_self_cost_ratio,
					u_implement_amt_vat_ori: _data.u_implement_amt,
					u_implement_cost_ratio_ori: _data.u_implement_cost_ratio,
					u_svc_cost_amt_vat_ori: _data.u_svc_cost_amt,
					u_svc_cost_ratio_ori: _data.u_svc_cost_ratio,
                    u_source_phid:_data.phid
				});
			});
		});
	}

    function getPtInfoByPhid() {
      if (mstform.getItem("phid_pc").getValue()) {
        $NG.execServer("getPtInfoByPhid", { phid: mstform.getItem("phid_pc").getValue() }, function (res) {
          const datas = JSON.parse(res.data)[0].extendObjects;
          console.log(datas);
          $NG.updateState((updater) => {
            updater.data.p_form_equipment_chg.setProps({
              //项目编码
              u_pc_no: datas.pc_no,
              //项目金额
              approx_contract_fc: datas.approx_contract_fc,
              //计划开工日期
              start_date: datas.start_date,
              //计划完工日期
              end_date: datas.end_date,
              //售前顾问
              u_sqgw: {
                value: datas.user_sqgw_phid,
                label: datas.user_sqgw_name,
              },
              //项目经理
              u_project_manager: {
                value: datas.project_manager_phid,
                label: datas.project_manager_name,
              },
              //事业部
              u_division: {
                value: datas.division_phid,
                label: datas.division_name,
              },
              //组织
              phid_org_phid: {
                value: datas.phid_org_phid,
                label: datas.phid_org_name,
              },
              //区域中心
              u_regional_center: {
                value: datas.regional_center_phid,
                label: datas.regional_center_name,
              },
              //产品线
              u_product_line: {
                value: datas.midwife_phid,
                label: datas.midwife_name,
              },
              //客户名称
              customer: {
                value: datas.customer_id,
                label: datas.customer_name,
              },
              //部门
              u_dept: {
                value: datas.dept_phid,
                label: datas.dept_name,
              },
              //项目类型
              u_pc_type: {
                value: datas.type_phid,
                label: datas.type_name,
              },
              //项目预算组织编码
              budget_org_code: datas.budget_org_no,
              //项目预算组织
              budget_org_phid: {
                value: datas.budget_org_phid,
                label: datas.budget_org_name,
              },
            });
          });
        });
      }
    }
  
    function cntMFilter() {
      $NG.updateUI((updater, state) => {
        updater.fieldSetForm.p_form_equipment_chg.u_cnt_id.setProps({
          onBeforeOpen: async () => {
            var phid_pc = mstform.getItem("phid_pc").getValue();
            if (!phid_pc) {
              $NG.alert("请先选择项目");
              return false;
            } else {
              return true;
            }
          },
          ...(!!mstform.getItem("phid_pc").getValue() && {
            clientSqlFilter: {
              bill_type: 1,
              phid_pc: mstform.getItem("phid_pc").getValue(),
            },
          }),
        });
      });
    }
  
    function getCntMInfoByPhid(params) {
      $NG.execServer("getCntMInfoByPhid", { phid: mstform.getItem("u_cnt_id").getValue() }, function (res) {
        const datas = JSON.parse(res.data)[0].extendObjects;
        console.log(datas);
        $NG.updateState((updater) => {
          updater.data.p_form_equipment_chg.setProps({
            u_cnt_no: datas.pcm_no, //合同编号
            start_dt: datas.start_dt, //约定开工时间
            end_dt: datas.end_dt, //约定完工时间
            u_total_cnt_amt_vat: datas.cnt_sum_vat_fc, //合同金额
            u_cnt_amt_vat: datas.cnt_sum_vat_fc, //合同金额
            cnt_sum_vat_fc: datas.cnt_sum_vat_fc, //合同价税合计
            //产品线
            user_product_line: {
              value: datas.midwife_phid,
              label: datas.midwife_name,
            },
            //合同类型
            u_cnt_type: {
              value: datas.pct_id,
              label: datas.pct_name,
            },
            //甲方单位
            u_customer: {
              value: datas.customer_id,
              label: datas.customer_name,
            },
            //乙方单位
            supply: {
              value: datas.supply_id,
              label: datas.supply_name,
            },
            //发票类型
            u_invoice_type: {
              value: datas.invoice_type_phid,
              label: datas.invoice_type_name,
            },
            //购方信息（客户信息）（收票单位信息）
            //单位名称
            tick_id: {
              value: datas.tick_id,
              label: datas.tick_name,
            },
            //单位编码
            tick_no: datas.tick_no,
            //社会信用代码
            tick_unisocialcredit: datas.tick_unisocialcredit,
            //单位地址
            tick_taxaddress: datas.tick_taxaddress,
            //联系电话
            tick_taxtelephone: datas.tick_taxtelephone,
            //银行名称
            tick_taxbankid: {
              value: datas.tick_taxbankid,
              label: datas.tick_taxbankname,
            },
            //银行账号
            tick_taxaccountno: datas.tick_taxaccountno,
            //销方信息（供应商信息）（开票单位信息）
            //单位名称
            inv_id: { value: datas.inv_id, label: datas.inv_name },
            //单位编码
            inv_no: datas.inv_no,
            //社会信用代码
            inv_unisocialcredit: datas.inv_unisocialcredit,
            //单位地址
            inv_taxaddress: datas.inv_taxaddress,
            //联系电话
            inv_taxtelephone: datas.inv_taxtelephone,
            //银行名称
            inv_taxbankid: {
              value: datas.inv_taxbankid,
              label: datas.inv_taxbankname,
            },
            //银行账号
            inv_taxaccountno: datas.inv_taxaccountno,
          });
        });
        getQzInfo()
        cntInfo()
      });
    }
  
    //获取设备清单表头信息




    // 获取设备清单明细
    function getSbqdDetailByCnt() {
      if (!mstform.getItem("u_cnt_id").getValue()) return;
      $NG.execServer("getSbqdDetailByCnt", { cnt: mstform.getItem("u_cnt_id").getValue() }, function (res) {
        console.log("获取明细", res);
        if (res.count == 0) return;
        //明细数组
        const _data = JSON.parse(res.data);
        console.log(_data);
        const _tempArr = [];
        let projectAmt = 0;
        let projectAmt_ws = 0;
        _data.forEach((items) => {
          const item = items.extendObjects;
          _tempArr.push({
            u_source_phid:item.phid,
            u_change_type: 1,
            u_revenue_type: item.u_revenue_type,
            u_eq_item_name: item.u_equipment_list_name,
            u_revenue_type_EXName: item.ur_exname,
            u_pc_subitem_category: item.u_pc_subitem_category,
            u_eq_item_no: item.u_equipment_list_no,
            u_cnt_item_no: item.u_cnt_item_no,
            u_cnt_item: item.u_cnt_item,
            u_cnt_item_EXName: item.u_cnt_item_exname,
            u_spec: item.u_spec,
            u_tech_params: item.u_tech_params,
            u_brand: item.u_brand,
            u_brand_EXName: item.u_brand_exname,
            u_is_self: item.u_is_self,
            u_is_standardized: item.u_is_standardized_tech_params,
            u_msunit: item.u_msunit,
            u_msunit_EXName: item.u_msunit_exname,
            u_qty: item.u_qty,
            u_cnt_prc: item.u_cnt_prc,
            u_cnt_amt_vat: item.u_cnt_amt_vat, //合同含税金额
            u_cnt_amt: item.u_cnt_amt,
            u_sub_name: item.u_sub_name,
            u_sub_spec: item.u_sub_ggxh,
            u_sub_item_category: item.u_sub_item_category,
            u_sub_item_category_EXName: item.u_sub_item_category_exname,
            u_sub_guide_prc: item.u_fwgczdj,
            u_sub_guide_prc_ori: item.u_fwgczdj,
            u_sub_prc: item.u_sub_prc,
            u_sub_prc_ori: item.u_sub_prc,
            u_sub_tax_rate: item.u_sub_tax_rate,
            u_sub_tax_rate_ori: item.u_sub_tax_rate,
            u_sub_cost: item.u_sub_cost,
            u_sub_cost_ori: item.u_sub_cost,
            u_sub_cost_vat: item.u_sub_cost_vat,
            u_sub_cost_vat_ori: item.u_sub_cost_vat,
            u_sub_item: item.u_sub_item,
            u_sub_item_EXName: item.u_sub_item_exname,
            u_pur_name: item.u_pur_name, //拟采购项名称
            u_pur_spec: item.u_pur_ggxh, // 拟采购规格
            u_pur_item_category: item.u_pur_item_category,
            u_pur_item_category_EXName: item.u_pur_item_category_exname,
            u_pur_guide_prc: item.u_cgzdj,
            u_pur_item_msunit:item.u_pur_item_msunit,
            u_pur_item_msunit_EXName:item.u_pur_item_msunit_exname,
            u_pur_guide_prc_ori: item.u_cgzdj,
            u_pur_prc: item.u_pur_prc,
            u_pur_prc_ori: item.u_pur_prc,
            u_pur_tax_rate: item.u_pur_tax_rate,
            u_pur_tax_rate_ori: item.u_pur_tax_rate,
            u_pur_cost: item.u_pur_cost,
            u_pur_cost_ori: item.u_pur_cost,
            u_pur_cost_vat: item.u_pur_cost_vat,
            u_pur_cost_vat_ori: item.u_pur_cost_vat,
            u_pur_item: item.u_pur_item,
            u_pur_item_EXName: item.u_pur_item_exname,
            u_self_name: item.u_self_name, //拟自制名称
            u_self_spec: item.u_self_ggxh,
            u_self_item_category: item.u_self_item_category,
            u_self_item_category_EXName: item.u_self_item_category_exname,
            u_self_item_msunit:item.u_self_item_msunit,
            u_self_item_msunit_EXName:item.u_self_item_msunit_exname,
            u_self_item: item.u_self_item,
            u_self_item_EXName: item.u_self_item_exname,
            u_self_prc: item.u_self_prc,
            u_self_prc_ori: item.u_self_prc,
            u_self_tax_rate: item.u_self_tax_rate,
            u_self_tax_rate_ori: item.u_self_tax_rate,
            u_self_cost: item.u_self_cost,
            u_self_cost_ori: item.u_self_cost,
            u_self_cost_vat: item.u_self_cost_vat,
            u_self_cost_vat_ori: item.u_self_cost_vat,
            done:true//用于标识已经存在于物料库，用于跳过物料匹配，如果行发生编辑会变成false
          });
          //汇总项目含税总额
          projectAmt += (Number(item.u_sub_cost_vat) || 0) + (Number(item.u_pur_cost_vat) || 0) + (Number(item.u_self_cost_vat) || 0);
          projectAmt_ws += (Number(item.u_sub_cost) || 0) + (Number(item.u_pur_cost) || 0) + (Number(item.u_self_cost) || 0);
        });
        project_amt.amt = projectAmt;
        project_amt.amt_ws = projectAmt_ws;
        dgrid1.clearRows().then(() => {
          dgrid1.addRows(_tempArr);
          dgrid1.refreshView();
        });
      });
    }
//判断 arr1 和 arr2 的交集和补集
function compareArrays(arr1, arr2) {
    const result = [[], [], []];

    // 遍历 arr1，找出 arr1 有但 arr2 没有的元素
    arr1.forEach((item1) => {
        const billNo1 = item1.u_bill_no;
        const isFoundInArr2 = arr2.some((item2) => item2.bill_no == billNo1);

        if (!isFoundInArr2) {
            result[0].push(item1);
        }
    });

    // 遍历 arr2，找出 arr2 有但 arr1 没有的元素
    arr2.forEach((item2) => {
        const billNo2 = item2.bill_no;
        const isFoundInArr1 = arr1.some((item1) => item1.u_bill_no == billNo2);

        if (!isFoundInArr1) {
            result[1].push(item2);
        }
    });
    console.log(`测试用例：`,result);
    // 找出 bill_no 相同的元素并合并
    arr1.forEach((item1) => {
        const billNo1 = item1.u_bill_no;
        const matchingItem2 = arr2.find((item2) => item2.bill_no == billNo1);

        if (matchingItem2) {
            const mergedItem = {};
            // 处理 arr1 元素的键，添加 ori 后缀
            for (const key in item1) {
                if (item1.hasOwnProperty(key)) {
                    if(key != 'phid'){
                        mergedItem[`${key}_ori`] = item1[key];
                    }
                }
            }
            // 处理 arr2 元素的键，添加 ori 后缀
            for (const key in matchingItem2) {
                if (matchingItem2.hasOwnProperty(key)) {
                        mergedItem[`${key}`] = matchingItem2[key];
                }
            }
            // 保留原始的 bill_no 键
            mergedItem.bill_no = billNo1;
            result[2].push(mergedItem);
        }
    });

    return result;
}
    // 三大费用带出，最新
    function danjvchaxun() {
      console.log(`触发了·····`);
      let mxLock = true;
      if (!mstform.getItem("phid_pc")) return;
      dgrid2.clearRows();
      dgrid3.clearRows();
      dgrid4.clearRows();
      if (dgrid2) {
        $NG.execServer(
          "get_impl_cost_budget_info",
          {
            phid_pc: mstform.getItem("phid_pc").getValue(),
          },
          function (res) {
            console.log(`实施费请求`, res);
            if (res.count == 0) return;
            const data = JSON.parse(res.data);
            console.log(res.data);
            //默认增行,批量新增表体数据
            var gridArr = []; //定义表体数组
            let total_amt = 0;
            //请求设备清单的原有数据
            console.log(`测试报错`,mstform.getItem("phid_pc").getValue());
            $NG.execServer("getSbqdPayDetailOri",{phid_pc:mstform.getItem("phid_pc").getValue()},(res)=>{
                console.log(`原实施`,res,mstform.getItem("phid_pc").getValue());
                let _ori = []
                if(res.count !== 0){
                    _ori = JSON.parse(res.data).reduce((value,item)=>{
                        value.push(item.extendObjects)
                        return value
                    },[])
                }
                console.log(`原有实施数据`,_ori);
                let current = data.reduce((value,item)=>{
                    value.push(item.extendObjects)
                    return value
                },[])
                const _arr = compareArrays(_ori,current)
                console.log(`合并的二维数组`,_arr);

                //添加现有数据有原有数据没有的
                _arr[0].forEach((el1)=>{
                    let gridObj= {}
                    gridObj.u_bill_no = el1.bill_no;
                    gridObj.u_total_impl_amt = el1.u_total_impl_amt;
                    gridObj.u_total_impl_labor_amt = el1.u_total_impl_labor_amt
                    gridObj.u_total_daily_amt = el1.u_total_daily_amt
                    gridObj.u_total_sec_dev_amt = el1.u_total_sec_dev_amt
                    gridObj.u_source_phid = el1.u_source_phid
                    gridArr.push(gridObj);
                })
                //添加现有数据没有原有数据有的
                _arr[1].forEach(el2=>{
                    let gridObj= {}
                    gridObj.u_bill_no = el2.bill_no;
                    gridObj.u_total_impl_amt_ori = el2.u_total_impl_amt;
                    gridObj.u_total_impl_labor_amt_ori = el2.u_total_impl_labor_amt
                    gridObj.u_total_daily_amt_ori = el2.u_total_daily_amt
                    gridObj.u_total_sec_dev_amt_ori = el2.u_total_sec_dev_amt
                    gridObj.u_source_phid = el2.phid;
                    gridArr.push(gridObj);
                })
                //添加都有的
                _arr[2].forEach((el4,index)=>{
                    console.log(`合并数据`,el4);
                    let gridObj= {}
                    gridObj.u_bill_no = el4.bill_no;
                    gridObj.u_total_impl_amt = el4.u_total_impl_amt;
                    gridObj.u_total_impl_amt_ori = el4.u_total_impl_amt_ori;
                    gridObj.u_total_impl_labor_amt = el4.u_total_impl_labor_amt;
                    gridObj.u_total_impl_labor_amt_ori = el4.u_total_impl_labor_amt_ori;
                    gridObj.u_total_daily_amt = el4.u_total_daily_amt;
                    gridObj.u_total_daily_amt_ori = el4.u_total_daily_amt_ori;
                    gridObj.u_total_sec_dev_amt = el4.u_total_sec_dev_amt;
                    gridObj.u_total_sec_dev_amt_ori = el4.u_total_sec_dev_amt_ori;
                    gridObj.u_source_phid = el4.phid;
                    gridArr.push(gridObj);
                })
                console.log(`实施`, total_amt);
                while (!mxLock) {}
                mxLock = false;
                project_amt.amt = project_amt.amt + total_amt;
                mxLock = true;
                //调用新增表体行数据的函数
                dgrid2.addRows(gridArr);
            })
          }
        );
      }
      if (dgrid3) {
        $NG.execServer(
          "get_svc_cost_budget_info",
          {
            phid_pc: mstform.getItem("phid_pc").getValue(),
          },
          function (res) {
            console.log(`服务请求`, res);
            if (res.count == 0) return;
            const data = JSON.parse(res.data);
            console.log(res.data);
            //默认增行,批量新增表体数据
            var gridArr = []; //定义表体数组
            var gridCount = res.count; //增加的行数,可根据从数据库从取出的数据总数增行
            let total_amt = 0;
            $NG.execServer("getSbadPayDetailSvcOri",{phid_pc:mstform.getItem("phid_pc").getValue()},(res)=>{
                const _ori = JSON.parse(res.data).reduce((value,item)=>{
                    value.push(item.extendObjects);
                    return value;
                },[]);
                console.log('服务原',_ori);
                const current = data.reduce((value,item)=>{
                    value.push(item.extendObjects);
                    return value;
                },[])
                const _arr = compareArrays(_ori,current)
                //添加现有数据有原有数据没有的
                _arr[0].forEach((el1)=>{
                    let gridObj= {}
                    gridObj.u_bill_no = el1.bill_no;
                    gridObj.u_total_svc_amt = el1.u_total_svc_amt;
                    gridObj.u_total_svc_labor_amt = el1.u_total_svc_labor_amt;
                    gridObj.u_total_daily_amt = el1.u_total_daily_amt;
                    gridObj.u_source_phid = el1.phid;
                    total_amt = Number(el1.u_total_svc_amt) || 0;
                    gridArr.push(gridObj);
                })
                //添加现有数据没有原有数据有的
                _arr[1].forEach(el2=>{
                    let gridObj= {}
                    gridObj.u_bill_no = el2.u_bill_no;
                    gridObj.u_total_svc_amt = el2.u_total_svc_amt;
                    gridObj.u_total_svc_labor_amt = el2.u_total_svc_labor_amt;
                    gridObj.u_total_daily_amt = el2.u_total_daily_amt;
                    gridObj.u_source_phid = el2.phid;
                    total_amt = Number(el2.u_total_svc_amt) || 0;
                    gridArr.push(gridObj);
                })
                //添加都有的
                _arr[2].forEach((el4,index)=>{
                    console.log(`合并数据`,el4);
                    let gridObj= {}
                    gridObj.u_bill_no = el4.bill_no;
                    gridObj.u_total_svc_amt = el4.u_total_svc_amt;
                    gridObj.u_total_svc_amt_ori = el4.u_total_svc_amt_ori;
                    gridObj.u_total_svc_labor_amt = el4.u_total_svc_labor_amt;
                    gridObj.u_total_svc_labor_amt_ori = el4.u_total_svc_labor_amt_ori;
                    gridObj.u_total_daily_amt = el4.u_total_daily_amt;
                    gridObj.u_total_daily_amt_ori = el4.u_total_daily_amt_ori;
                    gridObj.u_source_phid = el4.phid;
                    total_amt = Number(el4.u_total_svc_amt) || 0;
                    gridArr.push(gridObj);
                })

                console.log(`服务`, total_amt);
				while (!mxLock) {}
				mxLock = false;
				project_amt.amt = project_amt.amt + total_amt;
				mxLock = true;
				//调用新增表体行数据的函数
				dgrid3.addRows(gridArr);
            })
            
          }
        );
      }
      if (dgrid4) {
        $NG.execServer("getDevCostBudgetInfo", { phid_pc: mstform.getItem("phid_pc").getValue() }, function (res) {
          console.log(`研发费请求`, res);
          if (res.count == 0) return;
          const data = JSON.parse(res.data);
          console.log(res.data);
          //默认增行,批量新增表体数据
          var gridArr = []; //定义表体数组
          var gridCount = res.count; //增加的行数,可根据从数据库从取出的数据总数增行
          $NG.execServer("getSbqdPayDetailSelfOri",{phid_pc:mstform.getItem("phid_pc").getValue()},(res)=>{
            console.log('原二开费用',res);
            if(res.count == 0) return
            let _ori = JSON.parse(res.data).reduce((value,item)=>{
                value.push(item.extendObjects)
                return value 
            },[])
            let current = data.reduce((value,item)=>{
              value.push(item.extendObjects)
              return value 
            },[])
            const _arr = compareArrays(_ori,current)
            //添加现有数据有原有数据没有的
            _arr[0].forEach((el1)=>{
                let gridObj= {}
                gridObj.u_bill_no = el1.bill_no;
                gridObj.u_rdrg_expenses_total = el1.u_total_labor_amt;
                gridObj.u_rcfy_total = el1.u_total_daily_amt;
                gridObj.u_rd_expenses = el1.u_total_dev_amt;
                gridObj.u_source_phid = el1.phid;
                total_amt = Number(el1.u_total_dev_amt) || 0;
                gridArr.push(gridObj);
            })
            //添加现有数据没有原有数据有的
            _arr[1].forEach(el2=>{
                let gridObj= {}
                gridObj.u_bill_no = el2.bill_no;
                gridObj.u_rdrg_expenses_total = el2.u_total_labor_amt;
                gridObj.u_rcfy_total = el2.u_total_daily_amt;
                gridObj.u_rd_expenses = el2.u_total_dev_amt;
                gridObj.u_source_phid = el2.phid;
                total_amt = Number(el2.u_total_dev_amt) || 0;
                gridArr.push(gridObj);
            })
            //添加都有的
            _arr[2].forEach((el4,index)=>{
                console.log(`合并数据`,el4);
                let gridObj= {}
                gridObj.u_bill_no = el4.bill_no;
                gridObj.u_rdrg_expenses_total = el4.u_total_labor_amt;
                gridObj.u_rdrg_expenses_total_ori = el4.u_rd_expenses_ori;
                gridObj.u_rcfy_total = el4.u_total_daily_amt;
                gridObj.u_rcfy_total_ori = el4.u_rdrg_expenses_total_ori;
                gridObj.u_rd_expenses = el4.u_total_dev_amt;
                gridObj.u_rd_expenses_ori = el4.u_rcfy_total_ori;
                gridObj.u_source_phid = el4.phid;
                total_amt = Number(el4.u_total_dev_amt) || 0;
                gridArr.push(gridObj);
            })
            console.log(`yanfa `, total_amt);
            while (!mxLock) {}
            mxLock = false;
            project_amt.amt = project_amt.amt + total_amt;
            mxLock = true;
            //调用新增表体行数据的函数
            dgrid4.addRows(gridArr);
          })
         
        });
      }
      
    }
  //获取签证明细（合同明细）
    function getQzInfo(){
      setTimeout(()=>{
        const gridArr = []
      dgrid5 = $NG.getCmpApi("p_form_equipment_chg_qz");
      console.log(`签证单子`,dgrid5);
      if(dgrid5){
        console.log(`合同gi`,mstform.getItem("u_cnt_id").getValue());
        $NG.execServer("getCntDetail",{phid:mstform.getItem("u_cnt_id").getValue()},(res)=>{
          console.log(`签证请求`,res);
            if(res.count == 0) return
            const _data = JSON.parse(res.data).reduce((value,item)=>{
                value.push(item.extendObjects)
                return value
            },[])
            console.log(`签证明细`,_data);
            _data.forEach(el5=>{
                const gridObj = {};
                gridObj.u_cnt_no = el5.itemno
                gridObj.u_cnt_list_name = el5.itemname
                gridObj.u_unit = el5.phid_unit
                gridObj.u_unit_EXName = el5.msname
                gridObj.u_secp = el5.dspec
                gridObj.u_qty_ori = el5.qty
                gridObj.u_qty = el5.qty
                gridObj.u_rate =el5.taxrate
                gridObj.u_prc_ori = el5.prc_fc
                gridObj.u_cnt_prc = el5.prc_fc
                gridObj.u_prc_vat_ori = el5.prc_vat_fc
                gridObj.u_cnt_prc_vat = el5.prc_vat_fc
                gridObj.u_amt_vat_ori = el5.amt_vat_fc
                gridObj.u_cnt_amt_vat = el5.amt_vat_fc
                gridObj.u_amt_ori = el5.amt_fc
                gridObj.u_cnt_amt = el5.amt_fc
                gridArr.push(gridObj);
            })
            dgrid5.addRows(gridArr)
        })
      }
      },300)
    }
    //获取合同数量
    function getCntCount(table, key, fun) {
      if (!$NG.getCmpApi(table).getItem("phid_pc").getValue()) return;
      $NG.execServer(
        "getCntCount",
        {
          type: 1,
          phid_pc: $NG.getCmpApi(table).getItem("phid_pc").getValue(),
        },
        (res) => {
          console.log(res, "count");
          switch (res.count) {
            case 0:
              return;
            case 1:
              const datas = JSON.parse(res.data)[0].extendObjects;
              const temp_map = {};
              temp_map[key] = datas.phid;
              temp_map[`${key}_EXName`] = datas.bill_name;
              $NG.updateState((updater) => {
                updater.data[table].setProps({
                  ...temp_map,
                });
                setTimeout(() => {
                  if (fun) {
                    fun();
                  }
                }, 200);
              });
          }
        }
      );
    }
    // 签证明细 -- 设备清单明细
    function qzInfoToSbqdInfo() {
      let row5 = dgrid5.getRows();
      const row1 = dgrid1.getRows();
      if (row5.length !== 0) {
        // mstform.setReadOnly("u_alter_type", true);
        $NG.updateUI((updater) => {
          updater.fieldSetForm.p_form_equipment_chg.PCFieldSetPanelGroup1.u_alter_type.setProps({
            // hidden: true, //隐藏
            // required: true, //必输
            disabled: true, //只读
          });
        });
      } else {
        $NG.updateUI((updater) => {
          updater.fieldSetForm.p_form_equipment_chg.PCFieldSetPanelGroup1.u_alter_type.setProps({
            // hidden: true, //隐藏
            // required: true, //必输
            disabled: false, //只读
          });
        });
        // mstform.setReadOnly("u_alter_type", false);
      }
      // 设置唯一标识
      row5.forEach((item) => {
        if (!item._lsz_set_key) {
          item._lsz_set_key = new Date().getTime();
          // 设备清单明细新增行
          dgrid1.addRows([
            {
              u_cnt_item_no: item.u_cnt_no,
              u_cnt_item: item.u_cnt_list_name,
              u_eq_item_no: item.u_cnt_no,
              u_eq_item_name: item.u_cnt_list_name,
              u_change_type: "2",
              u_msunit: item.u_unit, //单位
              u_spec: item.u_secp, //规格
              u_pc_subitem_category: item.u_pc_subitem_category, //分项
              u_brand: item.u_brand, //品牌
              u_tech_params: item.u_tech_params, //技术参数
              u_qty: item.u_qty, //数量
              u_cnt_prc: item.u_cnt_prc, //合同未税单价
              u_cnt_amt_vat: item.u_cnt_amt_vat, //含税单价
              u_cnt_amt: item.u_cnt_amt, //合同未税金额
              _lsz_set_key: item._lsz_set_key,
            },
          ]);
          row5 = dgrid5.getRows();
        } else {
          // 匹配唯一标识，更改数据
          row1.forEach((elem) => {
            if (elem._lsz_set_key && elem._lsz_set_key == item._lsz_set_key) {
              elem.u_cnt_item_no = item.u_cnt_no;
              elem.u_cnt_item = item.u_cnt_list_name;
              elem.u_eq_item_no = item.u_cnt_no;
              elem.u_eq_item_name = item.u_cnt_list_name;
              elem.u_msunit = item.u_unit; //单位
              elem.u_msunit_EXName = item.u_unit_EXName; //单位
              elem.u_spec = item.u_secp; //规格
              elem.u_pc_subitem_category = item.u_pc_subitem_category; //分项
              elem.u_brand = item.u_brand; //品牌
              elem.u_brand_EXName = item.u_brand_EXName; //品牌
              elem.u_tech_params = item.u_tech_params; //技术参数
              elem.u_qty = item.u_qty; //数量
              elem.u_cnt_prc = item.u_cnt_prc; //合同未税单价
              elem.u_cnt_amt_vat = item.u_cnt_amt_vat; //含税单价
              elem.u_cnt_amt = item.u_cnt_amt; //合同未税金额
            }
          });
        }
      });
      // 同时删除逻辑
      row1.forEach((i) => {
        let lock = false;
        if (i._lsz_set_key) {
          row5.forEach((j) => {
            if (i._lsz_set_key && i._lsz_set_key == j._lsz_set_key) {
              lock = true;
            }
          });
          if (!lock) {
            dgrid1.deleteRow(i);
          }
        }
      });
      dgrid1.refreshView();
    }

    //匹配物料专用
    function matchingWl(){
      const _arr = dgrid1.getRows()
      _arr.forEach(items=>{
        console.log(!items.u_sub_item , items.u_sub_name?.trim() , String(items.u_sub_item_category || "").trim() , String(items.u_sub_item_msunit||"").trim() , items.u_sub_spec?.trim());
        if (items.u_sub_item) {
          $NG.execServer("getItemdataByPhid", { phid: items.u_sub_item }, function (res) {
            window.sNum += 1;
            if (res.count > 0) {
              var data = JSON.parse(res.data)[0].extendObjects; //单返回值
              items.u_sub_item_category = data.phid_resbs;
              items.u_sub_item_category_EXName = data.name;
              items.u_sub_name = data.itemname;
              items.u_sub_spec = data.spec;
              items.u_sub_item_msunit_EXName = data.msunit_name;
              items.u_sub_item_msunit = data.msunit_phid;
              items.u_sub_item_category = data.phid_resbs;
              items.u_sub_item_category_EXName = data.res_bs_name;
              items.u_fwgczdj = data.prc_ad;
            }
            dgrid1.refreshView();
          });
        } else if (!items.u_sub_item && items.u_sub_name?.trim() && String(items.u_sub_item_category || "").trim() && String(items.u_sub_item_msunit||"").trim() && items.u_sub_spec?.trim()) {
          $NG.execServer("getItemDataByName", { itemname: `'${items.u_sub_name}'`, spec: `'${items.u_sub_spec}'`, msunit: items.u_sub_item_msunit }, function (res) {
            window.sNum += 1;
            if (res && res.count > 0) {
              console.log("execServer:getItemDataByName");
              let data = JSON.parse(res.data)[0].extendObjects; // 单返回值
              items.u_sub_item = data.phid;
              items.u_sub_item_EXName = data.itemno;
              dgrid1.refreshView();
              console.log("接口");
            } else {
              window._list.push({
                  user_is_bz:items.user_is_bz,
                ItemName: items.u_sub_name,
                PhidResbs: items.u_sub_item_category,
                PhidMsunit: items.u_sub_item_msunit,
                Spec: items.u_sub_spec,
                ResBsCode: items.u_sub_item_category, // 假设 ResBsCode 是固定值，需根据实际情况调整
                ResourceType: "8570000000000002", // 假设资源类型是固定的
              });
            }
          });
        }
         //2. 更新拟采购项
      if (items.u_pur_item) {
        $NG.execServer("getItemdataByPhid", { phid: items.u_pur_item }, function (res) {
          window.newNum += 1;
          if (res.count > 0) {
            var purdata = JSON.parse(res.data)[0].extendObjects; //单返回值

            items.u_pur_item_category = purdata.phid_resbs;
            items.u_pur_item_category_EXName = purdata.name;
            items.u_pur_name = purdata.itemname;
            items.u_pur_spec = purdata.spec;
            items.u_pur_item_msunit_EXName = purdata.msunit_name;
            items.u_pur_item_msunit = purdata.msunit_phid;
            items.u_pur_item_category = purdata.phid_resbs;
            items.u_pur_item_category_EXName = purdata.res_bs_name;
            items.u_pur_guide_prc = purdata.prc_ad;
          } else {
          }
          dgrid1.refreshView();
        });
        $NG.execServer("getIsDj", { phid_wl: items.u_pur_item, phid_pc: mstform.getItem("phid_pc").getValue() }, (res) => {
          window.sNum += 1;
          if (res.count == 0) return;
          const _data = JSON.parse(res.data)[0].extendObjects;
          items.u_priced_prc = _data.u_target_prc;
          items.u_is_priced = 1;
          dgrid1.refreshView();
        });
      } else if (!items.u_pur_item && items.u_pur_name?.trim() && String(items.u_pur_item_category || "").trim() && String(items.u_pur_item_msunit || "").trim() && items.u_pur_spec?.trim()) {
        $NG.execServer("getItemDataByName", { itemname: "'" + items.u_pur_name + "'", spec: "'" + items.u_pur_spec + "'", msunit: items.u_pur_item_msunit }, function (res) {
          window.sNum += 1;
          if (res.count > 0) {
            let data = JSON.parse(res.data)[0].extendObjects; //单返回值
            items.u_pur_item = data.phid;
            items.u_pur_item_EXName = data.itemno;
            console.log("接口");
            dgrid1.refreshView();
          } else {
            window._list.push({
              user_is_bz:items.user_is_bz,
              ItemName: items.u_pur_name,
              PhidResbs: items.u_pur_item_category,
              PhidMsunit: items.u_pur_item_msunit,
              Spec: items.u_pur_spec,
              ResBsCode: items.u_pur_item_category, // 假设 ResBsCode 是固定值，需根据实际情况调整
              ResourceType: "2", // 假设资源类型是固定的
            });
          }
        });
      }

      //3. 更新拟自制项
      if (items.u_self_item) {
        $NG.execServer("getItemdataByPhid", { phid: items.u_self_item }, function (res) {
          window.sNum += 1;
          if (res.count > 0) {
            var data = JSON.parse(res.data)[0].extendObjects; //单返回值
            items.u_self_item_category = data.phid_resbs;
            items.u_self_item_category_EXName = data.name;
            items.u_self_name = data.itemname;
            items.u_self_spec = data.spec;
            items.u_self_item_msunit = data.msunit_phid;
            items.u_self_item_msunit_EXName = data.msunit_name;
            items.u_self_item_category_EXName = data.res_bs_name;
            items.u_self_item_category = data.phid_resbs;
            items.u_zzzdj = data.prc_ad;
          }
          dgrid1.refreshView();
        });
      } else if (!items.u_self_item && items.u_self_name?.trim() && String(items.u_self_item_category).trim() && String(items.u_self_item_msunit).trim() && items.u_self_spec?.trim()) {
        $NG.execServer("getItemDataByName", { itemname: "'" + items.u_self_name + "'", spec: "'" + items.u_self_spec + "'", msunit: items.u_self_item_msunit }, function (res) {
          window.sNum += 1;
          if (res.count > 0) {
            let data = JSON.parse(res.data)[0].extendObjects; //单返回值
            items.u_self_item = data.phid;
            items.u_self_item_EXName = data.itemno;
            dgrid1.refreshView();
            console.log("接口");
          } else {
            window._list.push({
                user_is_bz:items.user_is_bz,
              ItemName: items.u_self_name, 
              PhidResbs: items.u_self_item_category,
              PhidMsunit: items.u_self_item_msunit,
              Spec: items.u_self_spec,
              ResBsCode: items.u_self_item_category, // 假设 ResBsCode 是固定值，需根据实际情况调整
              ResourceType: "8570000000000001", // 假设资源类型是固定的
            });
          }
        });
      }
      })
    }

  });
  